#/usr/bin/env python
#coding:utf-8
# -*- coding: utf-8 -*-

import os
import logging
from logging.handlers import RotatingFileHandler
import time,datetime
import  socket

levellst = ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FALTAL']
logleve=[logging.DEBUG,logging.INFO,logging.WARN,logging.ERROR,logging.FATAL]

GLOABLELOGLEVEL=logging.DEBUG
FILELOGLEVEL = logging.INFO
CONSOLELOGLEVEL = logging.DEBUG
LOGDIR=os.path.abspath(os.path.join(os.getcwd(),'logs'))

def init_app(app):
    global GLOABLELOGLEVEL
    global FILELOGLEVEL
    global CONSOLELOGLEVEL
    global LOGDIR
    config=getattr(app, 'config', {})
    GLOABLELOGLEVEL = logleve[levellst.index(config['GLOABLELOGLEVEL'])]
    FILELOGLEVEL = logleve[levellst.index(config['FILELOGLEVEL'])]
    CONSOLELOGLEVEL = logleve[levellst.index(config['CONSOLELOGLEVEL'])]
    LOGDIR = config['LOGDIR']


def getlogger(file):
    # 日志模块设置--文件日志
    # 第一步，创建一个logger
    logger = logging.getLogger(file)
    logger.setLevel(GLOABLELOGLEVEL)  # Log等级总开关
    #定义全局日志格式
    formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    ######## 日志模块--文件日志########
    rq = time.strftime('%Y-%m-%d', time.localtime(time.time()))
    hostname = socket.gethostname()  # 获取当前主机名
    # 如果不存在定义的日志目录就创建一个
    if not os.path.isdir(LOGDIR):
        os.mkdir(LOGDIR)
    # 获取脚本名称，并以脚本名称作为日志名
    log_name = LOGDIR + os.sep+os.path.basename(os.path.realpath(file)).split('.')[0] +'_'+hostname+'_'+ rq + '.log'
    # 定义一个RotatingFileHandler，最多备份3个日志文件，每个日志文件最大30M
    fh = RotatingFileHandler(log_name, maxBytes=1024 * 1024 * 30, backupCount=10)
    #设置日志格式
    fh.setFormatter(formatter)
    # 文件日志级别
    fh.setLevel(FILELOGLEVEL)
    #添加到日志处理logger中
    logger.addHandler(fh)
    ######## 日志模块--控制台日志########
    ch = logging.StreamHandler()
    ch.setLevel(CONSOLELOGLEVEL)
    ch.setFormatter(formatter)
    logger.addHandler(ch)
    return  logger